package com.boot.mapper;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.boot.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

//Mapper接口中需要继承MyBatis-Plus的BaseMapper 将实体类的泛型指定上<User>
//BaseMapper:内置了很多SQL语句
@Mapper
public interface UserMapper extends BaseMapper<User> {

    @Select("select id,userName,password from t_user ${ew.customSqlSegment}")
    List<User> getAll(@Param(Constants.WRAPPER) Wrapper wrapper);

    @Select("select id,userName,password from t_user ${ew.customSqlSegment}")
    List<User> getAllCustomSql(@Param(Constants.WRAPPER) Wrapper<User> wrapper);

    List<User> selectUserMenus(@Param(Constants.WRAPPER) Wrapper<User> wrapper);

    /**
     * 自定义sql分页
     * @param page
     * @param queryWrapper 看这里看这里，如果自定义的方法中需要用到wrapper查询条件，需要这样写
     * @return
     */
    IPage<User> selectMyPage(IPage<User> page, @Param(Constants.WRAPPER) Wrapper<User> queryWrapper);

    /**
     * 自定义sql分页
     * @param page
     * @param queryWrapper 看这里看这里，如果自定义的方法中需要用到wrapper查询条件，需要这样写
     * @return
     */
    IPage<User> selectUserMenusPage(IPage<User> page, @Param(Constants.WRAPPER) Wrapper<User> queryWrapper);


}
